package top.goldenyear.porpoise.system.permission.model;

import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jetbrains.annotations.NotNull;
import top.goldenyear.porpoise.common.core.util.tree.BaseNode;

/**
 * @author airhead
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = false)
public class PermissionNode extends BaseNode<Integer, PermissionNode>
    implements Comparable<PermissionNode> {
  private Integer id;
  private Integer parentId;
  // 菜单类型
  private Integer type;
  // 菜单名称
  private String name;
  // 路由名称
  private String routeName;
  // 路由路径
  private String routePath;
  // 路径参数
  private String pathParam;
  // 查询参数
  private String query;
  // 布局
  private String layout;
  // 页面组件
  private String component;
  // 国际化
  private String i18nKey;
  // 排序号
  private Integer sortRank;
  // 图标类型
  private String iconType;
  // 图标
  private String icon;
  // 菜单状态
  private Integer status;
  // 是否缓存
  private String keepAlive;
  // 常量路由
  private String constant;
  // 外链
  private String href;
  // 隐藏菜单
  private String hide;
  private String activeMenu;
  // 支持多页签
  private String multiTab;
  // 页签序号
  private Integer fiexdIndexTab;

  // 权限key
  private String permissionKey;
  // 备注
  private String remark;

  private List<PermissionNode> children;

  @Override
  public int compareTo(@NotNull PermissionNode o) {
    if (o.sortRank == null) {
      return -1;
    }

    if (this.sortRank == null) {
      return 1;
    }

    return this.sortRank - o.sortRank;
  }
}
